ES 23.09.99

Pliki konfiguracyjne *.ini

Pliki konfiguracyjne ini zawieraj▒ sekcje, sekcje zawieraj▒ pola, kt≤re maj▒ warto╢µ.

Sekcje

Lista

Nazwa sekcji:
Form<Nazwa>s, np. dla przegl▒darki klient≤w (tabela/akcja Customer) bΩdzie FormCustomers

Pola:
SQL (wymagane) kwerenda, z kt≤rej bΩd▒ pobierane dane
Title (wymagane) tytu│ okienka listy
Text (wymagane) 
DataColumns (opcja) kolumny, kt≤re lista bΩdzie wykorzystywa│a do szybkiego   sortowania, lub filtrowania. 
ListColumnN (opcja) kolumny, kt≤re bΩdzie pokazywa│a lista. W przypadku, je┐eli nie jest   podane, wykorzystuje siΩ DataColumns
Default (opcja) filtr na│o┐ony na listΩ; zob. dalej
 

Przyk│ad:
[StyleName]
Font = 10.Arial.Bold.CharSet=238

[StyleFullName]
Font = 7.Arial.Italic.CharSet=238

[FormSponsors]
ListColumn0 = Kontrahent;name,StyleName;long_name,StyleFullName
ListColumn1 = Address1;name;+;address2;
DataColumns="1;2;3;4;5"
SQL="SELECT * FROM sponsor"
Title="Refundatorzy"
Text = "Ref&undatorzy"
Default = "id=1;name=abc"
 

Formularz

Nazwa sekcji:
Form<Nazwa>, np. FormCustomer

Pola:
Title (wymagane) tytu│ okienka rekordu
User (opcja) nazwa pola zawieraj▒cego identyfikator u┐ytkownika (user_id)
Status (opcja) nazwa pola zawieraj▒cego status dokumentu  (status)
Date (opcja) nazwa pola zawieraj▒cego bie┐▒c▒ datΩ  (date)
ItemNumber (opcja) nazwa pola zawieraj▒cego numer pozycji dokumentu
Number (opcja) nazwa pola zawieraj▒cego numer dokumentu
DefaultFilter (opcja)  domy╢lna kolumna do szybkiego wyszukiwania
DefaultSort (opcja)  domy╢lna kolumna do sortowania
 
 

Przyk│ad:
[FormInvoice]
Title = "Faktura"
User = "user_id"
Status = "status"
Date = "makeout_date;delivery_date"
Number = "id"
DefaultFilter = "contrator_id"
DefaultSort = "3"
 

DataColumns

Pole zawiera identyfikatory kolumn oddzielone ╢rednikami.
W DataColumns powinny wystΩpowaµ wszystkie pola wykorzystane w ListColumn.. Je┐eli nie ma sekcji ListColumn to lista zawiera pola wymienione w DataColumns. Je┐eli nie ma DataColumns to lista zawiera wszystkie pola tabel wymienione w SQL.

Identyfikator kolumny to liczba ca│kowita dodatnia lub nazwa kolumny bez nazwy tabeli lub nazwa tabeli i nazwa kolumny oddzielone kropk▒:

POLE_DATACOLUMN ::= DataColumn  = "<KOLUMNA>{;<KOLUMNA>}"
KOLUMNA ::= <LICZBA_DODATNIA>
  | <NAZWA_KOLUMNY>
  | <NAZWA_TABELI>.<NAZWA_KOLUMNY>

UWAGA: Nazwa tabeli NIE MO»E byµ aliasem u┐ytym w kwerendzie. 

Przyk│ad:
DataColumns = "1;2;customer_id;invoice.name;4;customer.name"
 

SQL
 

WA»NE: Kwerenda nie mo┐e ko±czyµ siΩ ╢rednikiem!
 

SELECT
W klauzuli SELECT mo┐na u┐ywaµ * i nazw kolumn.

Nazwy kolumn mo┐na kwalifikowaµ nazwami tabel, tak┐e aliasami. 

Nie mo┐na natomiast u┐ywaµ zapisu <tabela>.*
 

FROM
W klauzuli FROM mo┐na u┐ywaµ alias≤w oraz KEY/NATURAL JOIN.

G│≤wna tabela musi wystΩpowaµ jako pierwsza.
 

WHERE
Mo┐na u┐ywaµ dowolnych warunk≤w.

W kwerendach dla detaili pytajnik u┐ywany jako parametr do │▒czenia z masterem musi wystΩpowaµ na samym ko±cu.
 

Przyk│ad:
SQL="SELECT * FROM invoice_item I KEY LEFT OUTER JOIN physical_drug D WHERE  D.physical_drug_id>=0 AND I.invoice_id=?"

User, Date, Status

Pole User zawiera nazwΩ kolumny, kt≤ra opisuje klucz obcy do tabeli "user_account". Operacja Nowy  umieszcza w tej kolumnie identyfikator bie┐▒cego u┐ytkownika. 
Je┐eli  kolumna opisuj▒ca u┐ytkownika nazywa siΩ "user_id" to nie trzeba jej podawaµ w pliku ini.

Pole Date zawiera nazwy kolumn, oddzielone ╢rednikami, kt≤re powinny zawieraµ bie┐▒c▒ datΩ. 
Je┐eli  kolumna opisuj▒ca datΩ nazywa siΩ "date" to nie trzeba jej podawaµ w pliku ini.

Pole Status zawiera nazwΩ kolumny, kt≤ra opisuje status dokumentu. Operacja Zatwierd╝ umieszcza w tej kolumnie "Z".
Je┐eli  kolumna opisuj▒ca status nazywa siΩ "status" to nie trzeba jej podawaµ w pliku ini.

Identyfikator kolumny to liczba ca│kowita dodatnia lub nazwa kolumny bez nazwy tabeli lub nazwa tabeli i nazwa kolumny oddzielone kropk▒:

Default

Pole Default zawiera formu│Ω do filtrowania rekord≤w. Formu│a ta to niepusty ci▒g napis≤w postaci <kolumna>=<warto╢µ>, oddzielonych ╢rednikami, np.

Default = "group_id=2;member_of=13"

WiΩkszy przyk│ad

Dla typowego master/detail potrzeba 4 sekcji. Rozwa┐my to na przyk│adzie dokumentu faktury.

1. Najpierw tworzymy sekcjΩ dla listy faktur, czyli:

//------------ lista dokument≤w
[FormInvoices]
SQL="SELECT * FROM invoice"
Text = "&Faktury"
Title = "Faktury"
// Ten default nie ma sensu, to tylko przyk│ad
Default = "invoice_id=1"
 

2. Potem tworzymy dwie sekcje dla master/detail:

//------------ formularz mastera
[FormInvoice]
Title = "Faktura"
Number = "id"
User = "user_id"
Status = "status"
Date = "makeout_date;delivery_date"
Number = "id"
DefaultFilter = "2"
DefaultSort = "3"
// albo...
DefaultFilter = "customer_id"
DefaultSort = "drug_id"
 

//------------ lista pozycji, detail
[FormInvoiceItems] 
DataColumns="1;2;invoice_item.physical_drug_id;physical_drug.physical_drug_id" 
SQL="SELECT * FROM invoice_item I KEY LEFT OUTER JOIN physical_drug D WHERE  D.physical_drug_id>=0 AND I.invoice_id=?"
Text="&Pozycje Faktury"
Title="Pozycje Faktury"
 

3. Na koniec tworzymy sekcjΩ dla pojedynczej pozycji faktury:

//------------ formularz pozycji dokumentu
[FormInvoiceItem]
Title="Pozycja Faktury"
ItemNumber="item_number"
 

Do obejrzenia jest plik ea.ini.

Nazwa pliku

Ka┐da aplikacja powinna mieµ sw≤j plik ini, 
Przyk│ad:
  EuroApteka EA.ini.

Najlepiej aby plik by│ w katalogu, z kt≤rego uruchamiana jest aplikacja. 
Przyk│ad:
Dla ea jest katalog bie┐▒cy aplikacji.
 

NazwΩ pliku konfiguracyjnego okre╢la w kodzie programu:
 IAApplication::SetProfileFileName()

Przyk│ad:

 static const WString ProfileFileName=".\\EA.ini"; 
  // kropka oznacza bie┐▒cy katalog.

 _application.SetProfileFileName( ProfileFileName );

patrz r≤wnie┐ IAAction\Test\FormMain

ListColumnN

N = 0, 1, 2, ....
ListColumnN = NazwaKolumny ';' LisColumnDef
ListColumnDef = NazwaPolaBD ',' SekcjaStylu ';' ListColumnDef 
 | NazwaPolaBD ',' SekcjaStylu
 | NazwaPolaBD
(*) | ListColumnDef  ';+;' ListColumnDef 
 

Je┐eli w ListColumnN podane kilka p≤│ z bazy danych, to ich warto╢ci s▒ wy╢wietlane jedno pod drugim, chyba ┐e jest '+' ( przypadek * ) . Wtedy pole po plusie jest wy╢wietlane z prawej strony w tym samym wierszu co pole przed plusem.
 
 

Sekcje Stylu

Style definiowane s▒ w pliku iaStyle.ini
Wszystkie pola w sekcjach stylu s▒ opcjonalne. W przypadku, gdy nie jest podane pole, jest ustawiany styl domy╢lny.

Pola
Font = Definicja czcionki
Alignment = 'left' | 'right' | 'center'
Width = 'fixed' | liczba
Style = 'number'  | 'label' | 'switch'

 IAAction ver 01.28 ( 22-09-1999 )
Format =  definicja formatu (tylko dla Style = number)
Label =  definicja teksu (tylko dla Style= label)

W przypadku gdy pole Width ma warto╢µ 'fixed', szeroko╢µ kolumny ustawia siΩ tylko raz. Zmiana filtra lub sortowania nie modyfikuje szeroko╢ci kolumny.

Style = number
Pole Style o warto╢ci 'number' wy╢wietla tekst kolumny tak jak liczbΩ ( na przyk│ad 123456789.09 bΩdzie wy╢wietlone w postaci 123 456 789,09 ).

Pole Format
Pole Format jest uwzglΩdniane tylko dla Style = 'Number'.
Domy╢ln▒ warto╢ci▒ pola jest "%.2f". Sk│adnia jΩzyka C

Style = label
Style 'label' okre╢la sta│y napis.
Pole Label
Pole Label jest uwzglΩdniane tylko dla Style = 'Label'.
Warto╢ci▒ tego pola jest sta│y tekst wy╢wietlany dla ka┐dego wiersza.
Na przyk│ad )

Style = switch
Style 'switch' zamienia napis z zapytania na inny napis.
Pola CaseN, ValueN, gdzie N - numer kolejnego zamiennika numerowany od 0
Warto╢ci▒ pola CaseN jest napis, kt≤ry mo┐e powstaµ w wyniku zapytania
Warto╢ci▒ pola ValueN jest napis, na kt≤ry trzeba zamieniµ napis z CaseN.